package com.ruima.study.jdk21.jdk21.demo1;


/**
 * <p>
 * <p></p>
 * <p>
 * <p>Copyright (c) 2024/11/14 15:14, 科大讯飞 All Rights Reserve</p>
 *
 * @author ruima6
 * @version [V1.0]
 */
public class ScopeValueDemo {

    private static final ScopedValue<String> scopedValue = ScopedValue.newInstance();
    public static void main(String[] args) {
        ScopeValueDemo t = new ScopeValueDemo();
        t.giveGift();
    }

    //送礼
    public void giveGift() {
        /*
            在对象GIFT中增加字符串手机，当run方法执行时，
            会拷贝一份副本与当前线程绑定，当run方法结束时解绑。
            由此可见，这里GIFT中的字符串仅在收礼方法中可以取得。
         */
        ScopedValue.where(scopedValue, "手机").run(() -> receiveGift());
    }

    //收礼
    public void receiveGift() {
        // 手机
        System.out.println(scopedValue.get());
    }


}
